package com.qf.dao;

import com.qf.pojo.Order;
import com.qf.pojo.OrderItem;
import com.qf.pojo.User;

import java.lang.reflect.InvocationTargetException;
import java.sql.SQLException;
import java.util.List;

/**
 * @author Kuke
 * @date 2023/4/25 14:16
 * 订单数据访问接口
 */
public interface OrderDao {


    /**
     * 插入订单
     * @param order 订单实体
     */
    void insertOrder(Order order) throws SQLException;

    /**
     * 插入订单项实体
     * @param orderItem 订单项实体
     */
    void insertOrderItem(OrderItem orderItem) throws SQLException;

    /**
     * 数据访问接口获取订单分页数据
     * @param currentPage 当前页码
     * @param pageSize    每页显示的条数
     * @param user      用户实体
     * @return 返回分页数据
     */
    List<Order> findOrderByPage(int currentPage, int pageSize, User user) throws SQLException, InvocationTargetException, IllegalAccessException;

    /**
     * 查询用户下订单的总记录数
     * @param user 订单实体
     * @return 返回的总记录数
     */
    int getTotalCount(User user) throws SQLException;

    /**
     * 订单数据访问接口获取订单实体,通过订单编号
     * @param oid 订单编号
     * @return 返回指定的订单
     */
    Order selectOrderByOid(String oid) throws SQLException;

    /**
     * 订单数据访问接口更新订单状态
     * @param order 订单实体
     */
    void updateOrder(Order order) throws SQLException;
}
